package com.itheima.studentsystem;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        //创建一个学生管理系统
        //添加学生
        //删除学生
        //修改学生
        //查询学生            //loop:用于跳出指定循环  break loop
        //System.exit(0) 停止虚拟机运行
        Scanner sc = new Scanner(System.in);
        ArrayList<Student1> list = new ArrayList<>();
        String choose;
        do {
            menu();
            System.out.println("请输入您的选择：");
            choose = sc.next();
            switch (choose) {
                case "1" -> addStudent(list);
                case "2" -> deleteStudent(list);
                case "3" -> modifyStudent(list);
                case "4" -> checkStudent(list);
                case "5" -> System.out.println("退出系统！");
                default -> System.out.println("非法输入，请重新输入！");
            }
        } while (!choose.equals("5"));
    }

    //定义一个方法打印菜单
    public static void menu() {
        System.out.println("-------------------欢迎来到黑马管理系统---------------------");
        System.out.println("1；添加学生");
        System.out.println("2；删除学生");
        System.out.println("3；修改学生");
        System.out.println("4；查询学生");
        System.out.println("5；退出");
    }

    //定义一个方法添加学生
    public static void addStudent(ArrayList<Student1> list) {
        Scanner sc = new Scanner(System.in);
        String id;
        while (true) {
            System.out.println("请输入学生的id：");
            id = sc.next();
            int index = getindex(list, id);
            if (index >= 0) {
                System.out.println("id已经存在，请重新输入：");
            } else {
                break;
            }
        }

        System.out.println("请输入学生的姓名：");
        String name = sc.next();
        System.out.println("请输入学生的年龄：");
        int age = sc.nextInt();
        System.out.println("请输入学生的地址：");
        String address = sc.next();

        Student1 s = new Student1(id, name, age, address);

        //把学生对象添加到集合中
        list.add(s);

        //提示一下用户
        System.out.println("学生信息添加成功！");
    }

    //定义一个方法删除学生
    public static void deleteStudent(ArrayList<Student1> list) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入要删除的学生id：");
            String id = sc.next();
            int index = getindex(list, id);
            if (index >= 0) {
                list.remove(index);
                System.out.println("id为：" + list.get(index).getId() + "的学生删除成功！");
                return;
            } else {
                System.out.println("要删除的学生id不存在！请重新输入：");
            }
        }
    }

    //定义一个方法修改学生
    public static void modifyStudent(ArrayList<Student1> list) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入要修改的学生id：");
            String id = sc.next();
            int index = getindex(list, id);
            if (index >= 0) {
                System.out.println("请输入要修改的学生姓名：");
                String name = sc.next();
                System.out.println("请输入要修改的学生年龄：");
                int age = sc.nextInt();
                System.out.println("请输入要修改的学生地址：");
                String adress = sc.next();
                list.get(index).setName(name);
                list.get(index).setAge(age);
                list.get(index).setAdress(adress);
                System.out.println("学生信息修改成功！");
                return;
            } else {
                System.out.println("要修改的学生id不存在！请重新输入：");
            }
        }
    }

    //定义一个方法查询学生
    public static void checkStudent(ArrayList<Student1> list) {
        if (list.size() == 0) {
            System.out.println("当前无学生信息，请添加后再查询");
            //结束方法
            return;
        }
        System.out.println("id\t\t姓名\t年龄\t地址");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getId() + "\t" + list.get(i).getName() + "\t" + list.get(i).getAge() + "\t"
                    + list.get(i).getAdress());
        }
    }

    //定义一个方法找到要删除学生id的索引
    public static int getindex(ArrayList<Student1> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
}
